extensions.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { PageContainer } from 'ui-patterns/PageContainer'
  3. import {
  4. PageHeader,
  5. PageHeaderAside,
  6. PageHeaderDescription,
  7. PageHeaderMeta,
  8. PageHeaderSummary,
  9. PageHeaderTitle,
  10. } from 'ui-patterns/PageHeader'
  11. import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
  12. import { Extensions } from '@/components/interfaces/Database/Extensions/Extensions'
  13. import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
  14. import DefaultLayout from '@/components/layouts/DefaultLayout'
  15. import { DocsButton } from '@/components/ui/DocsButton'
  16. import NoPermission from '@/components/ui/NoPermission'
  17. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  18. import { DOCS_URL } from '@/lib/constants'
  19. import type { NextPageWithLayout } from '@/types'
  20. const DatabaseExtensions: NextPageWithLayout = () => {
  21. const { can: canReadExtensions, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  22. PermissionAction.TENANT_SQL_ADMIN_READ,
  23. 'extensions'
  24. )
  25. if (isPermissionsLoaded && !canReadExtensions) {
  26. return <NoPermission isFullPage resourceText="view database extensions" />
  27. }
  28. return (
  29. <>
  30. <PageHeader size="large">
  31. <PageHeaderMeta>
  32. <PageHeaderSummary>
  33. <PageHeaderTitle>Database Extensions</PageHeaderTitle>
  34. <PageHeaderDescription>
  35. Manage what extensions are installed in your database
  36. </PageHeaderDescription>
  37. </PageHeaderSummary>
  38. <PageHeaderAside>
  39. <DocsButton href={`${DOCS_URL}/guides/database/extensions`} />
  40. </PageHeaderAside>
  41. </PageHeaderMeta>
  42. </PageHeader>
  43. <PageContainer size="large">
  44. <PageSection>
  45. <PageSectionContent>
  46. <Extensions />
  47. </PageSectionContent>
  48. </PageSection>
  49. </PageContainer>
  50. </>
  51. )
  52. }
  53. DatabaseExtensions.getLayout = (page) => (
  54. <DefaultLayout>
  55. <DatabaseLayout title="Extensions">{page}</DatabaseLayout>
  56. </DefaultLayout>
  57. )
  58. export default DatabaseExtensions